﻿#include<iostream>
#include<vector>
using namespace std;
//Person
//
//class Person
//{
//public:
//	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证 
//	void identity()
//	{
//		// ...
//	}
//protected:
//	string _name = "peter"; // 姓名 
//	string _address;        // 地址 
//	string _tel;            // 电话 
//	int _age = 18;          // 年龄 
//};
//
//class Student:Person//学生
//{
//public:
//	// 学习 
//	void study()
//	{
//		// ...
//	}
//
//protected:
//	int _stuid;             // 学号 
//
//};
//
//class Teacher:Person//老师
//{
//public:
//
//
//	// 授课 
//	void teaching()
//	{
//		//...
//	}
//
//protected:
//	string _title;         // 职称 
//
//};
//
//int main()
//{
//
//	return 0;
//}
//namespace bit
//{
//	template<class T>
//	//继承vector,直接调用vector的成员函数，来完成stack栈
//	class stack : vector<T>
//	{
//	public:
//		//入栈
//		void push(const T& x)
//		{
//			// 基类是类模板时，需要指定⼀下类域， 
//            // 否则编译报错:error C3861: “push_back”: 找不到标识符 
//			// 因为stack<int>实例化时，也实例化vector<int>了 
//            // 但是模版是按需实例化，push_back等成员函数未实例化，所以找不到 
//			vector<T>::push_back(x);
//
//			//push_back(x);
//
//		}
//		//出栈
//		void pop()
//		{
//			vector<T>::pop_back();
//		}
//		//取栈顶
//		const T& top()
//		{
//			return vector<T>::back();
//		}
//		//判断是不是空
//		bool empty()
//		{
//			return vector<T>::empty();
//		}
//		//有效元素个数
//		int size()
//		{
//			return vector<T>::size();
//		}
//	};
//}
//
//
//int main() 
//{
//	bit::stack<int> s1;
//	s1.push(1);
//	s1.push(2);
//	s1.push(3);
//	s1.push(4);
//	cout << "size:" << s1.size() << endl;
//	while (!s1.empty())
//	{
//		cout << s1.top() << endl;
//		s1.pop();
//	}
//
//	return 0;
//}
//class Person
//{
//protected:
//	string _name; // 姓名 
//	string _sex; // 性别 
//	int _age; // 年龄 
//
//};
//
//class Student :public Person
//{
//protected:
//	int _No;
//};
//
//int main()
//{
//	Student sobj;
//	//赋值兼容转换，特殊处理
//	//派⽣类对象可以赋值给基类的指针 / 引⽤
//	Person* pp = &sobj;
//	Person& nn = sobj;
//
//	//派⽣类对象可以赋值给基类的对象是通过调⽤后⾯会讲解的基类的拷⻉构造完成的 
//	Person s1 = sobj;
//
//	//基类对象不能赋值给派⽣类对象，这⾥会编译报错
//	sobj = s1;
//}

//int main()
//{
//	double bl = 1.5;
//	const int a = bl;
//
//	return 0;
//}

